package com.wlps.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.wlps.contant.Contant;
import com.wlps.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.scheduling.annotation.Scheduled;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

/**
 * <p>
 *日期格式转换配置（）主要是解决时间段查询需求
 * </p>
 *
 * @author ZWYZY
 * @since 2020/5/4
 */
@Configuration
@Slf4j
public class WebConfig {
    @Autowired
    private RedisTemplate redisTemplate;
    @Autowired
    private JwtUtils jwtUtils;
    @Bean
    public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        //设置日期格式
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd");
        objectMapper.setDateFormat(smt);
        mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
        //设置中文编码格式
        List<MediaType> list = new ArrayList<MediaType>();
        list.add(MediaType.APPLICATION_JSON_UTF8);
        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
        return mappingJackson2HttpMessageConverter;
    }
//    @Scheduled(cron = "0/10 * * * * *")
//    public void updateData() {
//
//        Set<String> keys = redisTemplate.keys(Contant.TOKEN_ID_KEY + "*");
//        for (String str : keys
//        ) {
//            if (!jwtUtils.isTokenExpired((String) redisTemplate.opsForValue().get(str))) {
//                redisTemplate.opsForValue().decrement(Contant.ONLINEUSER_KEY);
//                redisTemplate.delete(str);
//                redisTemplate.delete(Contant.TOKEN_KEY + redisTemplate.opsForValue().get(str));
//                log.info("除掉当前在线的token");
//            }
//        }
//    }

}

